<!--
 * @Descripttion: 
 * @Version: 
 * @Author: gaohj
 * @Date: 2023-01-04 11:09:07
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2023-01-04 11:18:49
-->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        function get_second_num_index(arr) {

            // arr 是原数组  

            // 复制一个数组然后排序 
            var newarr = arr.slice(0);

            newarr.sort(function (a, b) {
                return a - b
            });

            // 拿到每个元素出现的次数 需要知道最大值出现的次数 

            // 第二大值的小标 等于 length-最大值出现的次数  
            var res = {};
            // 遍历newarr
            for (var k in newarr) {
                if (res[newarr[k]]) {
                    // newarr[k] 是数组的元素 
                    // res[newarr[k]] 对象中这个键是否存在 存在个数+1
                    res[newarr[k]]++;
                } else {
                    // 不存在个数为1
                    res[newarr[k]] = 1;
                }
            }
            
            // {5:1,6:1,16:1,34:1,77:1,100:1,103:1,546:3}
            // 元素:次数
            var max_num = res[newarr[newarr.length - 1]]; //拿到最大值出现的次数    3 
            // 根据最大值出现的次数 拿到第二大值的下标
            // 第二大值的下标 = length-最大值出现的次数-1
            // 在newarr 中 根据第二大值的下标拿到第二大值的元素 
            // 103
            // 在原数组中找到103的下标
            return arr.indexOf(newarr[newarr.length - max_num-1]); // 
            // newarr中 100的下标   
        }

        num_list = [34,6,546,5,101,103,546,546,16,77];
        console.log(get_second_num_index(num_list));
    </script>
</body>

</html>